Caching is a process in which data is stored in a central processing unit (CPU) cache of a computer to reduce the average cost, e.g., time or other computing resources, to access data from the main memory. The cache is a smaller, faster memory which stores copies of the data from frequently used main memory locations. Cache management is a process that controls movement of data between the cache and the main memory. More the number of cache hits, the lesser is the average cost of accessing the data. The cache hits can be maximized by storing all or most of the data from the memory in the cache. However, cache memory is very expensive and the cost of the cache increases exponentially with the size of the cache. Having a cache that can store all or most of the data from the memory in the cache may not be practical. Accordingly, the cache management processes use various caching policies to selectively store data that is requested more often than not to maximize the cache hits.
Many of the prior cache management processes are inefficient as the number of cache hits is not maximized. For example, prior cache management systems cache data items that are more frequently accessed. At least some of these data items can be duplicates. That is, the cache can store multiple copies of a data item. For example, if a cache management process determines that memory locations, e.g., “address 1” and “address 2,” are more frequently accessed and have to be cached, the values of “address 1” and “address 2” are cached regardless of whether those addresses store the same or different values. By storing duplicate values, the amount of cache storage available for storing distinct values is reduced, which can minimize the number cache hits. Further, it can also increase cache pollution and memory bandwidth. These problems are further multiplied in a datacenter scenario where a number of server computing devices are installed for serving data access requests from a number of client computing devices. Having an inefficient cache management process can increase the read and/or write latency of the entire datacenter and/or the average cost, e.g., time or other computing resources, to access the data stored at the datacenter.